#pragma once

#pragma unmanaged

#include <BWSAL\BuildUnitManager.h>

#pragma managed

#include "..\AiBase.h"
#include "Interfaces\IBuildUnitManager.h"

using namespace System::Collections::Generic;
using namespace BroodWar;
using namespace BroodWar::Api;

namespace BroodWar
{
	namespace Addon
	{
		public ref class BuildUnitManager : public AiBase, IBuildUnitManager
		{
		internal:
			BWSAL::BuildUnitManager* instance;

			BuildUnitManager();
			~BuildUnitManager();
			!BuildUnitManager();

			static BuildUnitManager^ s_instance;
		public:
			static property BuildUnitManager^ Instance { BuildUnitManager^ get(); }

			virtual void OnUnitEvade(Unit^ unit) override;
			virtual property HashSet<BuildUnit^>^ Units { HashSet<BuildUnit^>^ get(); }
			virtual void ResetPlanningData();
		};
	}
}
